package org.jeecg.modules.power.device.mapper;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.app.v1.device.entity.ApiDeviceEntity;
import org.jeecg.modules.app.v1.device.entity.ApiShopDeviceDetailEntity;
import org.jeecg.modules.app.v1.device.entity.ApiShopDeviceEntity;
import org.jeecg.modules.power.device.entity.YlDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * 增加方法请按分区写（后台 、 接口分区写）
 *
 * @Description: 设备表（初稿）
 * @Author: jeecg-boot
 * @Date:   2024-07-16
 * @Version: V1.0
 */
public interface YlDeviceMapper extends BaseMapper<YlDevice> {

    /**------------------------------------后台用--------------------------------------------------------*/
    /**
     * 查询设备列表
     * @param page
     * @param deviceMac
     * @param deviceCategory
     * @return
     */
    IPage<YlDevice> listAll(Page<YlDevice> page, String deviceMac,String deviceCategory);

    /**
     *
     * @param deviceMac 可变参数，可以使mac,也可以是id
     * @return
     */
    YlDevice getDeviceInfo(String deviceMac);

    /**------------------------------------后台用--------------------------------------------------------*/



    /**------------------------------------接口用--------------------------------------------------------*/


    /**
     *
     * @param deviceId
     * @return
     */
    ApiShopDeviceDetailEntity queryShopDeviceDetail(String deviceId);
    /**
     * 门店下设备列表
     * @param shopId
     * @return
     */
    List<ApiShopDeviceEntity>queryShopDevice(String shopId);
    /**
     * bd门店下的设备
     * @param page
     * @param flag
     * @param groupId
     * @param categoryId
     * @return
     */
    IPage<ApiDeviceEntity> shopDeviceList(Page<ApiDeviceEntity> page, String flag, String groupId, String categoryId);
    /**
     * bd下的设备
     * @param page
     * @param flag
     * @param groupId
     * @param categoryId
     * @return
     */
    IPage<ApiDeviceEntity> bdDeviceList(Page<ApiDeviceEntity> page, String flag, String groupId, String categoryId);
    /**
     * 仓库下的设备
     * @param page
     * @param categoryId
     * @return
     */
    IPage<ApiDeviceEntity> storeDeviceList(Page<ApiDeviceEntity> page,String categoryId);

    /**
     * 资产一览统计-小组BD下的设备
     * @param groupId
     * @return
     */
    List<YlDevice> selectGroupBdDevice(String groupId);
    /**
     * 资产一览统计-小组门店下的设备
     * @param groupId
     * @return
     */
    List<YlDevice> selectGroupShopDevice(String groupId);
    /**
     * 资产一览统计-BD下的设备
     * @param bdId
     * @return
     */
    List<YlDevice> selectBdDevice(String bdId);
    /**
     * 资产一览统计-BD门店下的设备
     * @param bdId
     * @return
     */
    List<YlDevice> selectBdShopDevice(String bdId);

    /**====================================================================================================================*/
    /**
     * 资产一览统计-小组BD下的设备
     * @param groupId
     * @return
     */
    List<YlDevice> selectLowerGroupBdDevice(String groupId);
    /**
     * 资产一览统计-小组门店下的设备
     * @param groupId
     * @return
     */
    List<YlDevice> selectLowerGroupShopDevice(String groupId);
    /**
     * 资产一览统计-BD下的设备
     * @param bdId
     * @return
     */
    List<YlDevice> selectLowerBdDevice(String bdId);
    /**
     * 资产一览统计-BD门店下的设备
     * @param bdId
     * @return
     */
    List<YlDevice> selectLowerBdShopDevice(String bdId);

/**====================================================================================================================*/
    /**
     * 资产一览统计-小组BD下的故障设备
     * @param groupId
     * @return
     */
    List<YlDevice> selectGroupBdFaultDevice(String groupId);
    /**
     * 资产一览统计-小组门店下的故障设备
     * @param groupId
     * @return
     */
    List<YlDevice> selectGroupShopFaultDevice(String groupId);
    /**
     * 资产一览统计-BD下的故障设备
     * @param bdId
     * @return
     */
    List<YlDevice> selectBdFaultDevice(String bdId);
    /**
     * 资产一览统计-BD门店下的故障设备
     * @param bdId
     * @return
     */
    List<YlDevice> selectBdShopFaultDevice(String bdId);
    /**
     * 资产一览统计-仓库设备
     * @param
     * @return
     */
    List<YlDevice> selectStorageDevice();

    /**------------------------------------接口用--------------------------------------------------------*/




































    /**mi
     * APP管理端首页  柜机门店数统计用
     * @param jDate 昨日截止日期
     * @return
     */
    List<String>  getMaxMac(@Param("jDate")String jDate);


    /**门店统计
     * APP管理端首页  0收益门店数  求店铺 店铺必须帮设备 且大于7天
     * @return
     */
    List<String> getMaxDayShop();



    /**门店详情 -进入统计模块-数据 用
     * mi  给据店铺id  获取店铺下的柜机设备数  和柜机设备仓口数
     * @param shopId 店铺id
     * @return
     */
    Map<String, Object> getShopIdDeviceQuantity(@Param("shopId") String shopId);
}
